A database system can implement various mechanisms in order to ensure that transactions executed on the database system produce a correct result. In particular, a database system can implement a concurrency control mechanism to isolate multiple concurrently executing transactions from each other and/or to prevent such transactions from interfering with one another. However, while concurrency control mechanisms are useful for correctness, they add overhead and negatively affect system performance (e.g., throughput and response time). One class of concurrency control mechanism is designed for systems with multiversioning, that is, where the database system may store multiple versions of a record with different versions having non-overlapping valid time intervals.
A database system can be a distributed database system, wherein the database is distributed over multiple disparate computers or nodes. In a distributed database, some transactions may be local or global. A local transaction is restricted to a single node, while a global transaction involves multiple nodes. A user is normally not aware of whether a transaction is local or global, as the transaction is handled “behind the scene” by the database system. Consequently, it would be desirable for a distributed database system to implement mechanisms for handling both local and global transactions that are complete, efficient and scalable. For instance, a local transaction executed by a distributed database system should incur minimal or no additional overhead over that associated with a transaction executed in a local database system. As another example, substantially all isolation levels supported for local transactions should also be supported for global transactions. As yet another example, transactions executed by a distributed database system should not require a frequently accessed global node, and in particular a global clock, in order to avoid performance and scalability loss associated with use of a global node and/or clock. As still another example, transactions executed by a distributed database system should not cause distributed deadlocks because such deadlocks are difficult and expensive to detect.
Conventionally, various solutions have been proposed for distributed transaction management in distributed database systems. However, none of the solutions proposed for distributed databases with multiversioning has addressed all of the above requirements, and such a solution would be desirable to significantly improve performance of distributed database systems.
The above-described deficiencies of today's distributed transaction management techniques are merely intended to provide an overview of some of the problems of conventional systems, and are not intended to be exhaustive. Other problems with conventional systems and corresponding benefits of the various non-limiting embodiments described herein may become further apparent upon review of the following description.